<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head profile="http://gmpg.org/xfn/11">


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Source : Better Flash 10 3D interaction : ArcBall | UnitZeroOne</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="WordPress 2.8.4">
<link rel="stylesheet" href="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/style.css" type="text/css" media="screen">
<link rel="alternate" type="application/rss+xml" title="UnitZeroOne RSS Feed" href="http://www.unitzeroone.com/blog/feed/">
<script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/toggle.js"></script>
<link rel="alternate" type="application/rss+xml" title="UnitZeroOne » Source : Better Flash 10 3D interaction : ArcBall Comments Feed" href="http://www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/feed/">
<link rel="stylesheet" id="wp_dlmp_styles-css" href="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/styles.css" type="text/css" media="all">
<link rel="stylesheet" id="sociable-front-css-css" href="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/sociable.css" type="text/css" media="">
<script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/swfobject.js"></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.unitzeroone.com/blog/xmlrpc.php?rsd">
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.unitzeroone.com/blog/wp-includes/wlwmanifest.xml"> 
<link rel="index" title="UnitZeroOne" href="http://www.unitzeroone.com/blog">
<link rel="start" title="Live @ MAX 2005 / Anaheim" href="http://www.unitzeroone.com/blog/2005/10/17/live-max-2005-anaheim/">
<link rel="prev" title="A PV3D book : Papervision3D Essentials" href="http://www.unitzeroone.com/blog/2009/09/03/papervision3d-essentials/">
<meta name="generator" content="WordPress 2.8.4">
<script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/prototype.js"></script>
<script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/scriptaculous.js"></script><script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/builder.js"></script><script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/effects.js"></script><script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/dragdrop.js"></script><script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/controls.js"></script><script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/slider.js"></script>
<script type="text/javascript" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/ajax-comments.js"></script>
<script type="text/javascript">
  ajax_comments_path = "http://www.unitzeroone.com/blog/wp-content/plugins/ajax-comments-wpmuified/";
  ajax_comments_form = 'commentform';
  ajax_comments_list = 'commentlist';
  ajax_comments_here = 'commentform';
  ajax_comments_hide = new Array();
  ajax_comments_hide_on_success = false;
</script>

<!-- all in one seo pack 1.5.7 [280,336] -->
<meta name="description" content="With the addition of the 2.5d API in Flash 10, lot's of developers now have even easier access to basic 2.5D environments. But with those new capabilities">
<meta name="keywords" content="2.5d,3d,arbcall,flash">
<link rel="canonical" href="http://www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/">
<!-- /all in one seo pack -->

<script type="text/javascript" charset="utf-8">

	/**
	 * Courtesy of Kimili Flash Embed - Version 2.0.3
	 * by Michael Bester - http://kimili.com
	 */

	(function(){
		try {
			// Registering Statically Published SWFs
			swfobject.registerObject("fm_Main_580926013","10.0.0","http://www.unitzeroone.com/blog/wp-content/plugins/kimili-flash-embed/lib/expressInstall.swf");
			swfobject.registerObject("fm_Main_864105478","10.0.0");
		} catch(e) {}
	}())
</script><style media="screen" type="text/css">#fm_Main_580926013 {visibility:hidden}</style><style media="screen" type="text/css">#fm_Main_864105478 {visibility:hidden}</style>
</head><body>
	<div id="wrapper"><a name="top"></a>
	<div id="masthead" class="fix">
	<h1><a href="http://www.unitzeroone.com/blog/">UnitZeroOne</a></h1>
		<div id="authorBlurb">
		<img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/avatar.png" alt="Avatar">
		<p id="authorIntro">A blog written by Ralph Hauwert, freelance developer, specialized in realtime visualisation, 3D and application development.</p>
		</div>
	</div>
	<ul class="nav fix">
		<li><a href="http://www.unitzeroone.com/blog/" title="Return to the the frontpage">Home<br><span>Frontpage</span></a></li>
		<li><a href="javascript:;" onmousedown="toggleDiv('archives');" title="View the archives">Archives<br><span>browse</span></a></li>
		<li><a href="http://www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/?page_id=119" title="Contact Form">Contact<br><span>work, etc</span></a></li>
		<li class="skip"><a href="#main" title="Skip to content">Main<br><span>Skip to content</span></a></li>
	</ul>
	<div id="archives" class="fix" style="display: none;"> 
		<ul class="fix">
			<li class="cat-item cat-item-15"><a href="http://www.unitzeroone.com/blog/category/conferences/" title="View all posts filed under Conferences">Conferences</a>
<ul class="children">
	<li class="cat-item cat-item-24"><a href="http://www.unitzeroone.com/blog/category/conferences/adobe-live-2006/" title="View all posts filed under Adobe Live 2006">Adobe Live 2006</a>
</li>
	<li class="cat-item cat-item-28"><a href="http://www.unitzeroone.com/blog/category/conferences/adobe-max-2005/" title="View all posts filed under Adobe MAX 2005">Adobe MAX 2005</a>
</li>
	<li class="cat-item cat-item-87"><a href="http://www.unitzeroone.com/blog/category/conferences/fitc-conferences/" title="View all posts filed under FITC">FITC</a>
</li>
	<li class="cat-item cat-item-16"><a href="http://www.unitzeroone.com/blog/category/conferences/fitc-amsterdam-2008/" title="View all posts filed under FITC Amsterdam 2008">FITC Amsterdam 2008</a>
</li>
	<li class="cat-item cat-item-22"><a href="http://www.unitzeroone.com/blog/category/conferences/flashconference/" title="View all posts filed under FlashConference">FlashConference</a>
</li>
	<li class="cat-item cat-item-86"><a href="http://www.unitzeroone.com/blog/category/conferences/multimania/" title="View all posts filed under Multimania">Multimania</a>
</li>
	<li class="cat-item cat-item-17"><a href="http://www.unitzeroone.com/blog/category/conferences/singularity-2008/" title="View all posts filed under Singularity 2008">Singularity 2008</a>
</li>
	<li class="cat-item cat-item-27"><a href="http://www.unitzeroone.com/blog/category/conferences/spark-europe-2005/" title="View all posts filed under Spark Europe 2005">Spark Europe 2005</a>
</li>
</ul>
</li>
	<li class="cat-item cat-item-19"><a href="http://www.unitzeroone.com/blog/category/cool-sites/" title="View all posts filed under Cool Sites">Cool Sites</a>
</li>
	<li class="cat-item cat-item-76"><a href="http://www.unitzeroone.com/blog/category/fitc-toronto-2008/" title="View all posts filed under FITC Toronto 2008">FITC Toronto 2008</a>
</li>
	<li class="cat-item cat-item-18"><a href="http://www.unitzeroone.com/blog/category/news/" title="View all posts filed under News">News</a>
</li>
	<li class="cat-item cat-item-23"><a href="http://www.unitzeroone.com/blog/category/random-thoughts/" title="View all posts filed under Random Thoughts">Random Thoughts</a>
</li>
	<li class="cat-item cat-item-34"><a href="http://www.unitzeroone.com/blog/category/rephlex/" title="View all posts filed under rephlex">rephlex</a>
</li>
	<li class="cat-item cat-item-21"><a href="http://www.unitzeroone.com/blog/category/technology/" title="View all posts filed under Technology">Technology</a>
<ul class="children">
	<li class="cat-item cat-item-26"><a href="http://www.unitzeroone.com/blog/category/technology/examples/" title="View all posts filed under Examples">Examples</a>
</li>
	<li class="cat-item cat-item-5"><a href="http://www.unitzeroone.com/blog/category/technology/flash/" title="View all posts filed under Flash">Flash</a>
</li>
	<li class="cat-item cat-item-62"><a href="http://www.unitzeroone.com/blog/category/technology/flash-lite/" title="View all posts filed under Flash Lite">Flash Lite</a>
</li>
	<li class="cat-item cat-item-11"><a href="http://www.unitzeroone.com/blog/category/technology/flex/" title="View all posts filed under Flex">Flex</a>
</li>
	<li class="cat-item cat-item-12"><a href="http://www.unitzeroone.com/blog/category/technology/papervision3d/" title="View all posts filed under Papervision3D">Papervision3D</a>
</li>
</ul>
</li>
	<li class="cat-item cat-item-1"><a href="http://www.unitzeroone.com/blog/category/uncategorized/" title="View all posts filed under Uncategorized">Uncategorized</a>
</li>
	<li class="cat-item cat-item-25"><a href="http://www.unitzeroone.com/blog/category/user-groups/" title="View all posts filed under User Groups">User Groups</a>
</li>
	<li class="cat-item cat-item-20"><a href="http://www.unitzeroone.com/blog/category/work/" title="View all posts filed under Work">Work</a>
</li>
	<li class="cat-item cat-item-58"><a href="http://www.unitzeroone.com/blog/category/workshop/" title="View all posts filed under Workshop">Workshop</a>
</li>
		</ul>
	</div><div id="mid" class="fix">
	<div id="mainCol" class="fix"><a name="main"></a>
				<div class="post" id="post-269">
			<div class="postMeta fix"><span class="date">Sep 8, 2009</span></div>
			<h2><a href="http://www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/" title="Source : Better Flash 10 3D interaction : ArcBall">Source : Better Flash 10 3D interaction : ArcBall</a></h2>
			<div class="entry">
				<p><img class="alignnone" title="My artistic rendering." src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/ArcBallPostImage.jpg" alt="" width="430" height="430"></p>
<p>With the addition of the 2.5d API in Flash 10, lot's of developers
now have even easier access to basic 2.5D environments. But with those
new capabilities and API's new challenges for developers arise.
Famously, Flash 10 doesn't do the Z-Sorting natively. When <a onclick="javascript:pageTracker._trackPageview('/outgoing/theflashblog.com/');" href="http://theflashblog.com/" target="_blank"><strong>Lee Brimelow</strong></a> asked me if I could send him an easy solution for that, I sent him the <a onclick="javascript:pageTracker._trackPageview('/outgoing/theflashblog.com/?p=470');" href="http://theflashblog.com/?p=470" target="_blank"><strong>SimpleZSorter</strong></a>. Which he in turn used to paste my profile picture on as much as possible planes, but more significantly, <a onclick="javascript:pageTracker._trackPageview('/outgoing/gotoandlearn.com/play?id=92');" href="http://gotoandlearn.com/play?id=92" target="_blank"><strong>use for this tutorial</strong></a>.</p>
<p>Althought the name Simple would imply something a bit away from a
PerfectZSorter (which, technically, has some challenges considering the
2.5D API and the player performance, don't ask), the thing which
astounded me was the amount of feedback. Sure, more people had asked me
for such a solution and this simple little tool did it for them most of
the time.</p>
<p>But considering the simplicity of the SimpleZSorter and the amount
of feedback I got on it (even if I didn't publish on it myself) made
clear that although the 2.5D API of Flash 10 opened up loads of
opportunities for developers and designers a like, some of the simpler
issues aren't addressed by it, whist there is clearly a need for it.
That need can be addressed and with this post I'm hoping to do a
another small part.</p>
<p><strong>The ArcBall</strong></p>
<p>One of the questions which people have been asking me about for in
relation to using the 2.5D API, is (loosely combined) "How do I rotate
things in 3D correctly with the mouse".As this question came more and
more, I've also realized how fundamental this is to our community. With
Flash 10 we have native realtime (2.5D) 3D, but with realtime comes
interactivity. And what use is it for users to have a 3D interface,
while the controls are not intuitive ? At that point 3D becomes a worse
experience, rather then a better. While this solution won't address
every issue with that, it most certainly addresses one, 3D rotation
dragging.</p>
<p><span id="more-269"></span>Native 3D interaction might be new to
Flash, but it certainly isn't new to Flash 3D, or 3D in general for
that matter. And the problem of having a user rotate an object with a
mouse has been addressed before in numerous different ways. So luckily
the wheel doesn't need any inventing. The wheel I chose for to address
this problem is called an <strong><a onclick="javascript:pageTracker._trackPageview('/outgoing/portal.acm.org/citation.cfm?id=155312');" title="ArcBall Paper" href="http://portal.acm.org/citation.cfm?id=155312" target="_blank">ArcBall</a></strong>, first proposed by Ken Shoemake.&nbsp; Now if you want to read that paper go ahead, but let me define this in flashers <span style="text-decoration: line-through;">layman</span> terms.</p>
<p><strong>The Problem</strong></p>
<p>Let's first have a look at the problem as I've seen examples of code
of people and derived it to this "problem" example. Drag the cube to
rotate it.</p>

<object style="visibility: visible;" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="fm_Main_580926013" class="flashmovie" width="430" height="430">
	<param name="movie" value="http://www.unitzeroone.com/labs/arcball/wrong/example/Main.swf">
	<!--[if !IE]>-->
	<object type="application/x-shockwave-flash" data="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/Main.swf" name="fm_Main_580926013" width="430" height="430">
	<!--<![endif]-->
		<a onclick="javascript:pageTracker._trackPageview('/outgoing/adobe.com/go/getflashplayer');" href="http://adobe.com/go/getflashplayer"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/get_flash_player.gif" alt="Get Adobe Flash player"></a>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Although the mouse dragging does offer some feeling of control,
you'll find it difficult to rotate it in a natural intuitive way, to
let's say to the front of one of those colored planes. Here's what's
happening here in that code, and what I've been seeing most.</p>
<pre class="actionscript"><span style="color: rgb(177, 177, 0);">if</span><span style="color: rgb(102, 204, 102);">(</span>isDragging<span style="color: rgb(102, 204, 102);">)</span><span style="color: rgb(102, 204, 102);">{</span>
boxSprite.<span style="color: rgb(0, 102, 0);">rotationX</span> = mouseY;
boxSprite.<span style="color: rgb(0, 102, 0);">rotationY</span> = mouseX;
<span style="color: rgb(102, 204, 102);">}</span></pre>
<p>This is example is the most common and is responsible for the
example above. Now, the problem here is that it doesn't take into
account the local object transformation, as well as the dragging
coordinates. As the object rotates around it's axis, so do it's axis
change. Also, as the dragging goes on, we don't take into account the
2D coordinate versus it's 3D transformation dragging start and final
output. All in all it ends up being a bit messy.</p>
<p><strong>The Solution</strong></p>
<p>Here's the solution using the ArcBall class. Drag to rotate.<br>

<object style="visibility: visible;" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="fm_Main_864105478" class="flashmovie" width="430" height="430">
	<param name="movie" value="http://www.unitzeroone.com/labs/arcball/correct/example/Main.swf">
	<!--[if !IE]>-->
	<object type="application/x-shockwave-flash" data="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/Main_002.swf" name="fm_Main_864105478" width="430" height="430">
	<!--<![endif]-->
		
<p><a onclick="javascript:pageTracker._trackPageview('/outgoing/adobe.com/go/getflashplayer');" href="http://adobe.com/go/getflashplayer"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/get_flash_player.gif" alt="Get Adobe Flash player"></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
</p><p><strong>The solution, the complex part<br>
</strong></p>
<p>As you can see / feel, object rotations now feel much more direct
and natural. But what is this magic ? First off all, the class is fully
Flash 10, and uses it's native methods and features, where available
for this solution. To explain it as simple as possible, as you click
and start dragging on the cube, a sphere is established. This virtual
sphere, around the object is then used to establish a point in 3D space
on the sphere. As you are dragging, your actually rotating other points
on the sphere. From these angular differences on the sphere, we can
derive a new transform matrix for the object.</p>
<p>The hard part is in the establishing the rotational angles from
those 2 coordinates on a sphere. A well proven way to do that (and the
only form I have seen in ArcBall implementations, so far), is using <strong><a onclick="javascript:pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Quaternion');" title="Quaternions are scary" href="http://en.wikipedia.org/wiki/Quaternion" target="_blank">Quaternions (go ahead, read it now, all of it, I dare you)</a></strong>.
Quaternions are complex things (pun intended). Now Quaternions are a
bit daunting to start at and at this point I would be lying if I said I
fully understand them. I'm not the only one who finds them scary,
quoting <strong><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.bit-101.com/blog/?p=2339#comments');" title="Keith is scared" href="http://www.bit-101.com/blog/?p=2339#comments" target="_blank">Keith Peters / Bit-101</a></strong> ; "<em>Oh no. Vector3D’s w is the second most scary w in the world.</em>" (I wonder what the first is, Keith ?).</p>
<p><strong>Quaternions and Flash 10</strong></p>
<p>If you are looking for the clearcut solution and implementation of my class for it, skip this part, otherwise, read on, enjoy.</p>
<p>The reference to the <em>w</em> in that quote is also a reference to the <span style="text-decoration: line-through;">complex component</span> real component of the quaternion, where the xyz are complex numbers. <a onclick="javascript:pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Complex_number');" href="http://en.wikipedia.org/wiki/Complex_number" target="_blank"><strong>Yes, complex numbers (I dare you again)</strong></a>
and their appliance is where stuff does get scary for most of us. The
great thing about the Flash 10 3D and geom API is that there is a
partial native support for quaternions, next to having a vector with
x,y,z and w components. For instance, this:</p>
<pre class="actionscript">matrix3D.<span style="color: rgb(0, 102, 0);">decompose</span><span style="color: rgb(102, 204, 102);">(</span>OrientationStyle.<span style="color: rgb(0, 102, 0);">QUATERNION</span><span style="color: rgb(102, 204, 102);">)</span>;</pre>
<p>Which will return a Vector of 3 Vector3D's, which are in order
translation, rotation, and scale. When using the quaternion orientation
style, the rotation will be filled with a Vector3D with it's x,y,z,w
values nicely filled; a quaternion. While this is something we could
have handled ourselves (decomposing a matrix to it's components using
quaternions), it's great Flash 10 has it. Less code, less size and it's
faster then doing it with your own defined functions.</p>
<p>This ArcBall implementation relies heavily on that piece of code and
some added code to do some additional stuff with the quaternions
(multiply doesn't seem to be available native). Now while I'm not
enough of an authority to try and explain quaternions, the applications
for them in 3D rotation are numerous, most famously, the first thing
which will get mentioned when talking about the topic of <a onclick="javascript:pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Gimbal_lock');" href="http://en.wikipedia.org/wiki/Gimbal_lock" target="_blank"><strong>Gimbal lock</strong></a>, which is a problem most encountered by astronauts and people developing 3D applications (see! us developers <strong>do</strong> have something in common with astronauts, we're now doing rocket science!).</p>
<p>That being said, on a wider look on Quaternions, for example, Both <a onclick="javascript:pageTracker._trackPageview('/outgoing/blog.zupko.info/?p=150');" href="http://blog.zupko.info/?p=150" target="_blank"><strong>Andy Zupko</strong></a> and <a onclick="javascript:pageTracker._trackPageview('/outgoing/pv3d.org/2008/12/29/quaternion-explorer/');" href="http://pv3d.org/2008/12/29/quaternion-explorer/" target="_blank"><strong>John Lindquist</strong></a> have done some nice articles on the subject and it's appliances in <a onclick="javascript:pageTracker._trackPageview('/outgoing/blog.papervision3d.org');" href="http://blog.papervision3d.org/" target="_blank"><strong>Papervision3D</strong></a>.
Papervision3D, running from Flash 9 and higher, has it's own Quaternion
implementation, as Flash 9 doesn't support it natively.</p>
<p><strong>Deriving an easy solution for all</strong></p>
<p>While the solution to ArcBalls using Quaternions isn't even that
hard, I still felt the problem should be abstracted a bit more, with an
easy one stop solution for all. After all, the reason I got that much
feedback on the SimpleZSorter, is clearly because people actually use
it. Why do people use it ? My estimate is, it addresses a real problem
and it's simple to implement. And while that might cause a little
overhead, and make it less flexible, it works for people looking for a
simple solution. Here's how that was implemented.</p>
<pre class="actionscript">SimpleZSorter.<span style="color: rgb(0, 102, 0);">sortClips</span><span style="color: rgb(102, 204, 102);">(</span>boxSprite,<span style="color: rgb(0, 0, 0); font-weight: bold;">true</span><span style="color: rgb(102, 204, 102);">)</span>;</pre>
<p>Simple enough right ? So for the abstraction of the ArcBall something similar made sense.<br>
Using the ArcBall class (and getting your correct dragging rotations up and running in no time) works like this.</p>
<pre class="actionscript">arcBall = <span style="color: rgb(0, 0, 0); font-weight: bold;">new</span> ArcBall<span style="color: rgb(102, 204, 102);">(</span>boxSprite<span style="color: rgb(102, 204, 102);">)</span>;</pre>
<p>Now you can drag this object, and get nice, intuive rotations from it. There are a bunch of options to use;</p>
<pre class="actionscript">arcBall = <span style="color: rgb(0, 0, 0); font-weight: bold;">new</span> ArcBall<span style="color: rgb(102, 204, 102);">(</span>boxSprite, useRadius, radius<span style="color: rgb(102, 204, 102);">)</span>;</pre>
<p>If you set the useRadius argument to true, and set radius to a
specific value for that object (think about a sphere which completely
encapsulates the object you have, it's bounding sphere, see my
beautiful artistic rendering at the top of this post), the bounding
sphere used per dragging action is the same size. When that option is
left set to false, the point on the sphere is derived from the click in
3D space on that object and thus speed might vary, depending where the
user start the drag.</p>
<p>Because the ArcBall class automatically adds listeners to the
object, and automatically enables dragging on it, you need a way to
switch it off when it's not wanted.</p>
<pre class="actionscript">arcBall.<span style="color: rgb(0, 102, 204);">enabled</span> = <span style="color: rgb(0, 0, 0); font-weight: bold;">false</span>;
<span style="color: rgb(128, 128, 128); font-style: italic;">//To enable it again</span>
arcBall.<span style="color: rgb(0, 102, 204);">enabled</span> = <span style="color: rgb(0, 0, 0); font-weight: bold;">true</span>;</pre>
<p>So, that's it. I hope it helps you in getting a better experience
for the end user. Since this is an abstraction for ease of use and much
more can be done, the entire code base for both examples and the
ArcBall under the <strong><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.opensource.org/licenses/mit-license.php');" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></strong>; essentially, do with it what you want, if it breaks anything, it's not my fault. Let me know what you think.</p>
<p>Lastly a mention of sources which helped me with getting this right; <a onclick="javascript:pageTracker._trackPageview('/outgoing/rainwarrior.thenoos.net/dragon/arcball.html');" href="http://rainwarrior.thenoos.net/dragon/arcball.html" target="_blank"><strong>rainwarrior</strong></a>, <a onclick="javascript:pageTracker._trackPageview('/outgoing/nehe.gamedev.net/data/lessons/lesson.asp?lesson=48');" href="http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=48"><strong>NeHe</strong></a>, <a onclick="javascript:pageTracker._trackPageview('/outgoing/processing.org/hacks/hacks:arcball');" href="http://processing.org/hacks/hacks:arcball" target="_blank"><strong>processing</strong></a>. Sharing works!</p>
<p><strong>Sources</strong></p>
<p><a onclick="javascript:pageTracker._trackPageview('/downloads/labs/arcball/arcball.zip');" href="http://www.unitzeroone.com/labs/arcball/arcball.zip"><strong>ArcBall (just the sources for use).</strong></a></p>
<p><a onclick="javascript:pageTracker._trackPageview('/downloads/labs/arcball/RotationWrong.zip');" href="http://www.unitzeroone.com/labs/arcball/RotationWrong.zip"><strong>RotationWrong (sources for the first example, incorrect drag rotation)</strong></a></p>
<p><a onclick="javascript:pageTracker._trackPageview('/downloads/labs/arcball/RotationArcBall.zip');" href="http://www.unitzeroone.com/labs/arcball/RotationArcBall.zip"><strong>RotationArcBall (sources for the second example, correct dragging using the ArcBall class)</strong></a></p>
<p>[Update 8/9/2009]</p>
<p>Little update on the quaternion explanation.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Digg, StumbleUpon, Slash and others:</strong>
</div>
<ul>
	<li class="sociablefirst"><a onclick="javascript:pageTracker._trackPageview('/outgoing/digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall&amp;bodytext=%0D%0A%0D%0AWith%20the%20addition%20of%20the%202.5d%20API%20in%20Flash%2010%2C%20lot%27s%20of%20developers%20now%20have%20even%20easier%20access%20to%20basic%202.5D%20environments.%20But%20with%20those%20new%20capabilities%20and%20API%27s%20new%20challenges%20for%20developers%20arise.%20Famously%2C%20Flash%2010%20doesn%27t%20do%20the%20Z-Sorting%20');" rel="nofollow" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall&amp;bodytext=%0D%0A%0D%0AWith%20the%20addition%20of%20the%202.5d%20API%20in%20Flash%2010%2C%20lot%27s%20of%20developers%20now%20have%20even%20easier%20access%20to%20basic%202.5D%20environments.%20But%20with%20those%20new%20capabilities%20and%20API%27s%20new%20challenges%20for%20developers%20arise.%20Famously%2C%20Flash%2010%20doesn%27t%20do%20the%20Z-Sorting%20" title="Digg"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/digg.png" title="Digg" alt="Digg" class="sociable-hovers"></a></li>
	<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/delicious.com/post?url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall&amp;notes=%0D%0A%0D%0AWith%20the%20addition%20of%20the%202.5d%20API%20in%20Flash%2010%2C%20lot%27s%20of%20developers%20now%20have%20even%20easier%20access%20to%20basic%202.5D%20environments.%20But%20with%20those%20new%20capabilities%20and%20API%27s%20new%20challenges%20for%20developers%20arise.%20Famously%2C%20Flash%2010%20doesn%27t%20do%20the%20Z-Sorting%20');" rel="nofollow" href="http://delicious.com/post?url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall&amp;notes=%0D%0A%0D%0AWith%20the%20addition%20of%20the%202.5d%20API%20in%20Flash%2010%2C%20lot%27s%20of%20developers%20now%20have%20even%20easier%20access%20to%20basic%202.5D%20environments.%20But%20with%20those%20new%20capabilities%20and%20API%27s%20new%20challenges%20for%20developers%20arise.%20Famously%2C%20Flash%2010%20doesn%27t%20do%20the%20Z-Sorting%20" title="del.icio.us"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers"></a></li>
	<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall');" rel="nofollow" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall" title="DZone"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/dzone.png" title="DZone" alt="DZone" class="sociable-hovers"></a></li>
	<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall');" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall" title="StumbleUpon"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers"></a></li>
	<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/slashdot.org/bookmark.pl?title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall&amp;url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F');" rel="nofollow" href="http://slashdot.org/bookmark.pl?title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall&amp;url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F" title="Slashdot"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers"></a></li>
	<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/technorati.com/faves?add=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F');" rel="nofollow" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F" title="Technorati"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers"></a></li>
	<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall');" rel="nofollow" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fwww.unitzeroone.com%2Fblog%2F2009%2F09%2F08%2Fsource-better-flash-10-3d-interaction-arcball%2F&amp;title=Source%20%3A%20Better%20Flash%2010%203D%20interaction%20%3A%20ArcBall" title="blogmarks"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers"></a></li>
	<li><a rel="nofollow" href="" title="BlogMemes"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/a.htm" title="BlogMemes" alt="BlogMemes" class="sociable-hovers"></a></li>
	<li class="sociablelast"><a rel="nofollow" href="" title="Ma.gnolia"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/a.htm" title="Ma.gnolia" alt="Ma.gnolia" class="sociable-hovers"></a></li>
</ul>
</div>


<p>Related posts:</p><ol><li><a href="http://www.unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/" rel="bookmark" title="Permanent Link: Flash 10, Massive amounts of 3D particles with Alchemy (source included).">Flash 10, Massive amounts of 3D particles with Alchemy (source included).</a></li></ol>			</div>


		</div>


		<div id="comments_wrapper">
<!-- You can start editing here. -->
	<div id="comments" class="section"><h3>9 Comments, <a href="#respond" title="Leave a comment">Comment</a> or <a href="http://www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/trackback/" rel="trackback">Ping</a></h3></div> 
	<ol class="commentslist">
			<li class="alt item" id="comment-2213">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/mrdoob.com');" href="http://mrdoob.com/" rel="external nofollow" class="url">Mr.doob</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>Thanks!! I’ve been always too lazy to go into this. Finally I’ll be able to implement it <img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/icon_biggrin.gif" alt=":D" class="wp-smiley"> </p>
		</div>
		<p class="post_meta"><a href="#comment-2213" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
					<li class=" item" id="comment-2214">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.bit-101.com');" href="http://www.bit-101.com/" rel="external nofollow" class="url">Keith Peters</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>The scariest w is no longer in power. <img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/icon_smile.gif" alt=":)" class="wp-smiley"> </p>
		</div>
		<p class="post_meta"><a href="#comment-2214" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
							<li class="alt item" id="comment-2216">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/msfx.co.uk');" href="http://msfx.co.uk/" rel="external nofollow" class="url">MSFX</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>Is it me or has the Z-Sorter class dissapeared from Lee’s repository?<br>
<a onclick="javascript:pageTracker._trackPageview('/outgoing/code.google.com/p/leebrimelow/');" href="http://code.google.com/p/leebrimelow/" rel="nofollow">http://code.google.com/p/leebrimelow/</a></p>
<p>Also, I ran into an issue with it which the solution to was here,
not sure if you or others have had issues with it, was really wierd.<br>
<a onclick="javascript:pageTracker._trackPageview('/outgoing/code.google.com/p/leebrimelow/issues/detail?id=3');" href="http://code.google.com/p/leebrimelow/issues/detail?id=3" rel="nofollow">http://code.google.com/p/leebrimelow/issues/detail?id=3</a></p>
<p>Nice one for the class, will try and get you a drink in at FOTB <img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/icon_wink.gif" alt=";)" class="wp-smiley"> </p>
<p>Matt / MSFX</p>
		</div>
		<p class="post_meta"><a href="#comment-2216" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
					<li class=" item" id="comment-2217">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.interactionfigure.nl');" href="http://www.interactionfigure.nl/" rel="external nofollow" class="url">Jop Wielens</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>Subtle but big difference. Good work!</p>
		</div>
		<p class="post_meta"><a href="#comment-2217" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
					<li class="alt item" id="comment-2218">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.onthewings.net/');" href="http://www.onthewings.net/" rel="external nofollow" class="url">Andy Li</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>Thank you for the works!</p>
<p>3D interaction is really always a problem in the recent years… And
there are so many different approaches… (look at those 3D games, 3D
modeling tools etc..)</p>
<p>BTW, do you have any idea to get not only rotation but also translation done in a single component?</p>
		</div>
		<p class="post_meta"><a href="#comment-2218" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
					<li class=" item" id="comment-2219">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user">Gumble</span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>Must be the w in wedding <img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/icon_razz.gif" alt=":P" class="wp-smiley"> </p>
		</div>
		<p class="post_meta"><a href="#comment-2219" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
					<li class="alt item" id="comment-2220">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.fluid.nl');" href="http://www.fluid.nl/" rel="external nofollow" class="url">Remon Tijssen</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>Thanks
Ralph, it’s amazing to keep seeing how you create solutions for complex
stuff like this and making it usefull to a much broader audiance. Now I
can keep ignoring what the hell Quaternions are and move on.</p>
		</div>
		<p class="post_meta"><a href="#comment-2220" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
					<li class=" item" id="comment-2221">
		<div class="fix">
		<div class="author_meta">
			<p class="author_meta"><span class="user"><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.theflashblog.com');" href="http://www.theflashblog.com/" rel="external nofollow" class="url">Lee Brimelow</a></span> <span class="comment_edit"></span></p>
		</div>
		<div class="comment_text">
						<p>@MSFX here is a direct link to SimpleZSorter: <a onclick="javascript:pageTracker._trackPageview('/outgoing/code.google.com/p/leebrimelow/source/browse/#svn/trunk/as3/com/theflashblog/3d');" href="http://code.google.com/p/leebrimelow/source/browse/#svn/trunk/as3/com/theflashblog/3d" rel="nofollow">http://code.google.com/p/leebrimelow/source/browse/#svn/trunk/as3/com/theflashblog/3d</a></p>
		</div>
		<p class="post_meta"><a href="#comment-2221" title="Comment Permalink">Sep 8th, 2009</a></p>
		</div>
	</li>	
				</ol>
	<ol class="pingslist">
								<li class="alt" id="comment-2215">
		<div class="author_meta"><a onclick="javascript:pageTracker._trackPageview('/outgoing/topsy.com/tb/www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/');" href="http://topsy.com/tb/www.unitzeroone.com/blog/2009/09/08/source-better-flash-10-3d-interaction-arcball/" rel="external nofollow" class="url">Tweets that mention Source : Better Flash 10 3D interaction : ArcBall | UnitZeroOne -- Topsy.com</a> - Sep 8th, 2009</div>
		</li>
																</ol>
 	<h3 id="respond">Reply to “Source : Better Flash 10 3D interaction : ArcBall”</h3>
<form action="http://www.unitzeroone.com/blog/wp-comments-post.php" method="post" id="commentform">
<p><input name="author" id="author" size="22" tabindex="1" type="text">
<label for="author"><small>Name (required)</small></label></p>
<p><input name="email" id="email" size="22" tabindex="2" type="text">
<label for="email"><small>Mail (required)</small></label></p>
<p><input name="url" id="url" size="22" tabindex="3" type="text">
<label for="url"><small>Website</small></label></p>
<p><textarea name="comment" id="comment" cols="60" rows="10" tabindex="4"></textarea></p>
<p><input name="submit" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/btn_submit.gif" alt="Submit" id="submit" tabindex="5" value="Submit" type="image">
<input name="comment_post_ID" value="269" type="hidden">
</p>


	<p style="clear: both;" class="subscribe-to-comments">
	<input name="subscribe" id="subscribe" value="subscribe" style="width: auto;" type="checkbox">
	<label for="subscribe">Notify me of followup comments via e-mail</label>
	</p>


<input id="ajax-comments-submit" name="ajax-comments-submit" value="1" type="hidden"></form>
</div><!-- end comments_wrapper -->
			</div>
	<div id="midCol">
<h3>Search</h3>
	<div id="searchWrap">
<form method="get" id="searchForm" action="http://www.unitzeroone.com/blog/">
	<input name="s" id="s" type="text"><input id="searchsubmit" src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/btn_search.gif" alt="Submit" type="image">
</form>
</div><div id="elseWhere">
	<ul>
<li><a href="http://www.fitc.ca/"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/FITC_TORONTO_2009_BADGE.jpg"></a></li>
<li><a href="http://www.flashontap.com/"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/FLASHONTAP_2009_BADGE.jpg"></a></li>
<li><a href="http://www.flashbelt.com/"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/FLASHBELT_2009_BADGE.jpg"></a></li>
<li><a href="http://www.fitc.ca/"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/FITC_Ed09_SpeakerBadge_UZO.jpg"></a></li>
<li><a href="http://www.flashonthebeach.com/"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/FOTB_2009_BADGE.jpg"></a></li>
	</ul>

<h3>Site hosted by : </h3>
<ul>
<li><a href="http://www.mediatemple.com/"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/MT_SPONSOR.jpg"></a></li>
</ul>
<h3>Projects &amp; Work</h3>
		<p>A selection of work</p>
		<ul id="imgLinks">
			<li><a href="http://blog.papervision3d.org/" title="Papervision3D blog"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/logoPapervision.jpg" alt="Grid Focus - 531"></a></li>
<li><a href="http://code.google.com/p/rephlex/" title="rePhlex AS3 Libary"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/logoRephlex.jpg" alt="Temp Rephlex Logo"></a></li>
			<li><a href="http://www.earthmine.com/" title="Earthmine homepage"><img src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/logoEarthmine.jpg" alt="Earthmine Logo"></a></li>

		</ul>
	</div><!-- close #imgLinks -->

<div class="middle_links">
		
      
		<h3>Subscribe</h3>
		<p>Stay updated via RSS.</p>
		<ul>
			<li><a href="feed://http//www.unitzeroone.com/blog/feed/" title="Full content RSS feed">Content RSS</a> - Straight to your reader</li>
			<li><a href="feed://http//www.unitzeroone.com/blog/comments/feed/" title="Full comments RSS feed">Comments RSS</a> - Add to the discussion</li>
		</ul>
	</div>
</div>
		<div id="tertCol">

<div class="middle_links">
	<div class="sidebar_widget"><div><h3><a class="twitterwidget" href="http://twitter.com/UnitZeroOne" title="Twitter: UnitZeroOne">Twitter: UnitZeroOne</a></h3><ul>				<li>
					<span class="entry-content"><a href="http://twitter.com/peter_nitsch" class="twitter-user">@peter_nitsch</a> currently, alchemy won't see any progress.</span>
					<span class="entry-meta">
						<span class="time-meta">
							<a href="http://twitter.com/UnitZeroOne/statuses/3850118217">
								about 4 hours ago							</a>
						</span>
						<span class="from-meta">
							from <a href="http://www.twhirl.org/" rel="nofollow">twhirl</a>						</span>
													<span class="in-reply-to-meta">
								<a href="http://twitter.com/peter_nitsch/statuses/3848564085" class="reply-to">
									in reply to peter_nitsch
								</a>
							</span>
					</span>
				</li>
				<li>
					<span class="entry-content"><a href="http://twitter.com/nodename" class="twitter-user">@nodename</a> <a href="http://twitter.com/TheFlashBum" class="twitter-user">@TheFlashBum</a> setting array.length = 0; is the cheapest way of emptying an array, it saves the new.</span>
					<span class="entry-meta">
						<span class="time-meta">
							<a href="http://twitter.com/UnitZeroOne/statuses/3845641424">
								about 8 hours ago							</a>
						</span>
						<span class="from-meta">
							from <a href="http://www.twhirl.org/" rel="nofollow">twhirl</a>						</span>
													<span class="in-reply-to-meta">
								<a href="http://twitter.com/nodename/statuses/3845354177" class="reply-to">
									in reply to nodename
								</a>
							</span>
					</span>
				</li>
				<li>
					<span class="entry-content">This is a question for the sceners; why is that guy giving me the kewlers logo ?</span>
					<span class="entry-meta">
						<span class="time-meta">
							<a href="http://twitter.com/UnitZeroOne/statuses/3845621016">
								about 8 hours ago							</a>
						</span>
						<span class="from-meta">
							from <a href="http://www.twhirl.org/" rel="nofollow">twhirl</a>						</span>
						
					</span>
				</li>
				<li>
					<span class="entry-content">LOL! because of <a href="http://twitter.com/scottjanousek" class="twitter-user">@scottjanousek</a> his interpretation of the <a href="http://twitter.com/influxis" class="twitter-user">@influxis</a> sponsored <a href="http://search.twitter.com/search?q=%23MaxEuropeInvasion" class="twitter-hashtag">#MaxEuropeInvasion</a> <a href="http://is.gd/32B61">http://is.gd/32B61</a> thanks to <a href="http://twitter.com/sebleedelisle" class="twitter-user">@sebleedelisle</a></span>
					<span class="entry-meta">
						<span class="time-meta">
							<a href="http://twitter.com/UnitZeroOne/statuses/3844449907">
								about 9 hours ago							</a>
						</span>
						<span class="from-meta">
							from <a href="http://www.twhirl.org/" rel="nofollow">twhirl</a>						</span>
						
					</span>
				</li>
				<li>
					<span class="entry-content"><a href="http://twitter.com/johnlindquist" class="twitter-user">@johnlindquist</a> just quats.http://is.gd/32uYr</span>
					<span class="entry-meta">
						<span class="time-meta">
							<a href="http://twitter.com/UnitZeroOne/statuses/3843420749">
								about 10 hours ago							</a>
						</span>
						<span class="from-meta">
							from <a href="http://www.twhirl.org/" rel="nofollow">twhirl</a>						</span>
													<span class="in-reply-to-meta">
								<a href="http://twitter.com/johnlindquist/statuses/3843385134" class="reply-to">
									in reply to johnlindquist
								</a>
							</span>
					</span>
				</li>
				<li class="xavisys-link">
					<span class="xavisys-link-text">
						Powered by <a href="http://xavisys.com/2008/04/wordpress-twitter-widget/" title="Get Twitter Widget for your WordPress site">WordPress Twitter Widget Pro</a>					</span>
				</li>
</ul></div></div><div class="sidebar_widget"><h3>Blogroll</h3>
	<ul class="xoxo blogroll">
<li><a href="http://www.airtightinteractive.com/news/">Airtightinteractive</a></li>
<li><a href="http://blog.andre-michelle.com/">Andre Michelle</a></li>
<li><a href="http://blog.zupko.info/">Andy Zupko</a></li>
<li><a href="http://www.anttikupila.com/">Anti Kupila</a></li>
<li><a href="http://aralbalkan.com/" rel="contact met">Aral Balkan</a></li>
<li><a href="http://www.away3d.com/">Away3D</a></li>
<li><a href="http://www.barcinski-jeanjean.com/entries/hourglass/">Barcinski-JeanJean</a></li>
<li><a href="http://www.berthagendoorn.nl/">Bert Hagendoorn</a></li>
<li><a href="http://bytearray.org/">ByteArray</a></li>
<li><a href="http://www.carlosulloa.com/">Carlos Ulloa</a></li>
<li><a href="http://www.rewindlife.com/">Chafic Kazoun</a></li>
<li><a href="http://blog.ff9900.org/">Chris Allen</a></li>
<li><a href="http://www.moock.org/blog/">Colin Moock</a></li>
<li><a href="http://evo.bombsquad.org/">Evoflash</a></li>
<li><a href="http://www.closier.nl/blog/">Fabrice Closier</a></li>
<li><a href="http://blog.franto.com/" title="Franto’s blog.">Franto</a></li>
<li><a href="http://www.gskinner.com/blog/">Grant Skinner</a></li>
<li><a href="http://www.flashguru.co.uk/">Guy Watson</a></li>
<li><a href="http://www.hanazuki.com/">Hanazuki</a></li>
<li><a href="http://www.harrynorthover.com/blog/">Harry Northover</a></li>
<li><a href="http://algorithmist.wordpress.com/">Jim Armstrong</a></li>
<li><a href="http://blog.je2050.de/">Joa Ebert</a></li>
<li><a href="http://weblogs.macromedia.com/jd/">John Dowdell</a></li>
<li><a href="http://www.rockonflash.com/blog/">John Grden</a></li>
<li><a href="http://justin.everett-church.com/">Justin Everett Church</a></li>
<li><a href="http://www.bit-101.com/blog/">Keith Peters</a></li>
<li><a href="http://www.newmovieclip.com/">Koen de Wegheirre</a></li>
<li><a href="http://theflashblog.com/">Lee Brimelow</a></li>
<li><a href="http://www.quasimondo.com/">Mario Klingeman</a></li>
<li><a href="http://www.martijndevisser.com/blog/">Martijn de Visser</a></li>
<li><a href="http://lab.polygonal.de/">Michael Baczynski</a></li>
<li><a href="http://www.mikechambers.com/blog/">Mike Chambers</a></li>
<li><a href="http://mrdoob.com/">Mr.Doob</a></li>
<li><a href="http://www.nielsbruin.nl/blog/">Niels Bruin</a></li>
<li><a href="http://blog.owenvandijk.nl/">Owen van Dijk</a></li>
<li><a href="http://blog.papervision3d.org/">Papervision3D</a></li>
<li><a href="http://www.peterelst.com/blog/">Peter Elst</a></li>
<li><a href="http://ricardocabello.com/">Ricardo Cabello</a></li>
<li><a href="http://www.infiniteturtles.co.uk/blog/">Rob Bateman</a></li>
<li><a href="http://drawlogic.com/">Ryan Christensen</a></li>
<li><a href="http://hiddenresource.net/">Sacha Balkau</a></li>
<li><a href="http://www.levelofindustry.com/">Samuel Agesilias</a></li>
<li><a href="http://www.flashsandy.org/blog/">Sandy</a></li>
<li><a href="http://www.sebleedelisle.com/">Seb Lee Delisle</a></li>
<li><a href="http://seraf.mediabox.fr/">Seraf</a></li>
<li><a href="http://www.webkitchen.be/">Serge Jespers</a></li>
<li><a href="http://funky-monkey.nl/">Sidney de Koning</a></li>
<li><a href="http://www.simppa.fi/blog/">Simo Santavirta</a></li>
<li><a href="http://www.tink.ws/blog/">Stephen Downs</a></li>
<li><a href="http://www.suite75.net/site/">Tim Knip</a></li>
<li><a href="http://www.kaourantin.net/">Tinic Uro</a></li>
<li><a href="http://www.valveblog.com/">Tuomas Artman</a></li>
<li><a href="http://www.twodotone.com/">TwoDotOne</a></li>
<li><a href="http://www.randomtype.com/" rel="friend met colleague">Ubi de Feo</a></li>
<li><a href="http://www.waldosmeets.com/">Waldo Smeets</a></li>
<li><a href="http://the.fontvir.us/b10g/">Xero</a></li>
<li><a href="http://www.zeh.com.br/">Zeh Fernando</a></li>

	</ul>
</div>
<div class="sidebar_widget"><h3>Communications</h3>
	<ul class="xoxo blogroll">
<li><a href="http://digg.com/users/UnitZeroOne">Digg</a></li>
<li><a href="http://www.linkedin.com/in/unitzeroone">LinkedIn</a></li>
<li><a href="http://www.netvibes.com/unitzeroone">Netvibes</a></li>
<li><a href="http://pulse.plaxo.com/pulse/profile/show/141734431177?pk=f37e65f8d9b54573bd0e75b11bfc3975da6d9c29">Plaxo</a></li>
<li><a href="http://pownce.com/UnitZeroOne/">Pownce</a></li>
<li><a href="http://www.twitter.com/UnitZeroOne">Twitter</a></li>
<li><a href="http://www.youtube.com/user/unitzeroone">Youtube</a></li>

	</ul>
</div>
<br>
</div>
	
</div><!-- close #tertCol --></div>
<div id="footer">
	<ul class="nav fix">
		<li><a href="http://www.unitzeroone.com/blog/" title="Return to the the frontpage">Home<br><span>Frontpage</span></a></li>
		<li class="top"><a href="#top" title="Return to the top">Top<br><span>Return to top</span></a></li>
	</ul>
	<p>WP Theme <a href="http://5thirtyone.com/grid-focus" title="Grid Focus by: Derek Punsalan">Grid Focus</a> by Derek Punsalan <a href="http://5thirtyone.com/">5thirtyone.com</a>.</p>
</div>
</div>
<script type="text/javascript">ajax_comments_odd  = true;</script>

<!-- tracker added by Ultimate Google Analytics plugin v1.6.0: http://www.oratransplant.nl/uga -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script><script src="Source%20%20%20Better%20Flash%2010%203D%20interaction%20%20%20ArcBall%20_%20UnitZeroOne_files/ga.js" type="text/javascript"></script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-678001-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body></html>